package com.gin.no_gay_alliance.utils;

import android.os.Parcel;
import android.os.Parcelable;

import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author : ginstone
 * @version : v1.0.0
 * @since : 2023/8/8 10:13
 **/
public class ParcelableUtils {
    public static <T extends Parcelable> T copy(T orig) {
        Parcel p = Parcel.obtain();
        orig.writeToParcel(p, 0);
        p.setDataPosition(0);
        T copy = null;
        try {
            copy = (T) orig.getClass().getDeclaredConstructor(new Class[]{Parcel.class}).newInstance(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return copy;
    }

    public static <T extends Parcelable> List<T> copy(Collection<T> collection) {
        return collection.stream().map(ParcelableUtils::copy).collect(Collectors.toList());
    }
}
